﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdlib.h>
//int main()
//{
//	int n = 1;
//	float* pFloat = (float*)&n;
//	//整数以%d的形式打印，结果为1
//	printf("n的值为：%7d\n", n);
//	//1在内存中的存储形式为
//	//00000000000000000000000000000001--补码（原码）
//	//以浮点数形式打印
//	//0 00000000 00000000000000000000001
//	//其中S为0，E为全0，所以E为-126，M为0.00000000000000000000001
//	//V = (-1) ^ 0 ∗ 0.00000000000000000000001 ∗ 2^-126
//	//所以结果为一个无限接近于0的数
//	printf("*pFloat的值为：%f\n", *pFloat);
//	*pFloat = 1.0;
//	//1.0在内存中的二进制存储形式为0001.0
//	//V = (-1) ^ 0 ∗ 1 ∗ 2^0
//	//S为0，E为0，M为1
//	//所以 0 01111111 00000000000000000000000
//	//以整数形式打印
//	//认为00111111100000000000000000000000为补码
//	//所以打印之后是一个非常大的数字
//	printf("n的值为：%16d\n", n);
//	//浮点数以%f打印，结果为1.000000
//	printf("*pFloat的值为：%f\n", *pFloat);
//	return 0;
//}

//练习使用atoi()函数

//int main()
//{
//	int num = 0;
//	int num1 = 0;
//	char arr[10] = "987";
//	num = atoi(arr);
//	printf("字符串值为：%s，整型值为：%d\n",arr,num);
//	char str[15] = "baidu.com";
//	num1 = atoi(str);
//	printf("字符串值为：%s，整型值为：%d\n", str, num1);
//	return 0;
//}

//模拟实现atoi函数
int my_atoi(const char* str)
{
	int j = 0;
	int sign = 1;
	int i = 0;
	//跳过空白字符
	for (i = 0; *(str + i) == ' ' || *(str + i) == '\t' || *(str + i) == '\n';i++)
	{
		;
	}
	//处理正负号
	if (*str == '-')
	{
		sign = -1;
		i++;
	}
	else if (*str == '+')
	{
		i++;
	}
	//转换数字
	for (j = 0; *(str + i) >= '0' && *(str + i) <= '9'; i++)
	{
		j = j * 10 + (*(str + i) - '0');
	}
	return j * sign;
}
int main()
{
	char arr[] = " \n123";
	int ret = my_atoi(arr);
	printf("%d\n",ret);
	return 0;
}
